View Javadoc
1 /* 2 * Created by IntelliJ IDEA. 3 * User: birchfield 4 * Date: Aug 18, 2002 5 * Time: 4:55:54 PM 6 * To change template for new class use 7 * Code Style | Class Templates options (Tools | IDE Options). 8 */ 9 package net.plugin.sql.util; 10 11 import net.plugin.sql.beans.DataSource; 12 import net.plugin.sql.listeners.DataSourceChangeListener; 13 14 import java.util.*; 15 import java.sql.Connection; 16 17 import com.intellij.openapi.project.Project; 18 19 public class DataSourceManager { 20 21 private final static HashMap instances = new HashMap(10); 22 23 private Collection datasources = null; 24 private Collection listeners = null; 25 26 private DataSourceManager() { 27 datasources = new ArrayList(); 28 listeners = new ArrayList(); 29 } 30 31 public static DataSourceManager getInstance(Project project) { 32 System.out.println("getInstance project = " + project); 33 DataSourceManager result = (DataSourceManager) instances.get(project); 34 if(result == null) { 35 result = new DataSourceManager(); 36 instances.put(project, result); 37 } 38 return result; 39 } 40 41 public synchronized void addDataSource(DataSource dataSource) throws DataSourceException { 42 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) { 43 DataSource source = (DataSource) iterator.next(); 44 if (dataSource.getName().equals(source.getName())) { 45 System.out.println("duplicate name..."); 46 throw new DataSourceException("A datasource with that name already exists!"); 47 } 48 } 49 JDBCConnectionManager jdbcmanager = new JDBCConnectionManager(dataSource); 50 Connection conn = jdbcmanager.getConnection(); 51 if (conn != null) { 52 System.out.println("Adding datasource: " + dataSource); 53 datasources.add(dataSource); 54 notifyListeners(); 55 } 56 } 57 58 public synchronized void removeDataSource(DataSource dataSource) { 59 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) { 60 DataSource source = (DataSource) iterator.next(); 61 if (source.getName().equals(dataSource.getName())) { 62 iterator.remove(); 63 } 64 } 65 } 66 67 public synchronized DataSource getDataSource(String name) { 68 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) { 69 DataSource dataSource = (DataSource) iterator.next(); 70 if (name.equals(dataSource.getName())) { 71 return dataSource; 72 } 73 } 74 return null; 75 } 76 77 public synchronized Collection getDataSources() { 78 Collection datasourcesCopy = new ArrayList(datasources.size()); 79 for (Iterator iterator = datasources.iterator(); iterator.hasNext();) { 80 DataSource dataSource = (DataSource) iterator.next(); 81 datasourcesCopy.add(dataSource); 82 } 83 return datasourcesCopy; 84 } 85 86 private void notifyListeners() { 87 for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { 88 DataSourceChangeListener dataSourceChangeListener = (DataSourceChangeListener) iterator.next(); 89 dataSourceChangeListener.dataSourcesChanged(); 90 } 91 } 92 93 public void addDataSourceListener(DataSourceChangeListener listener) { 94 listeners.add(listener); 95 } 96 97 }

This page was automatically generated by Maven